<?php

/**
 * Description of ResultadosController
 *
 * @author OBecerra
 * @export Modules
 */
class Resultados extends Module {

    public function index() {
        $facultades = $this->model->RepresentantesData->getFacultades();

        $ganadores = array();
        foreach ($facultades as $codigoFacultad) {
            $representantes = $this->model->RepresentantesData->getEstudiantesAprobadosByCodigoFacultad($codigoFacultad['facultad']);

            $mayorVotos = 0;
            $representanteGanador = array();

            foreach ($representantes as $representante) {
                $votos = $this->model->RepresentantesData->getVotosByCodigoEstudiante($representante['codigo_estudiante']);
                if (count($votos) > 0) {
                    if (count($votos) >= $mayorVotos) {
                        if (count($votos) > $mayorVotos) {
                            $representanteGanador = array($this->model->students->GetById($representante['codigo_estudiante']));
                        } else {
                            array_push($representanteGanador, $this->model->students->GetById($representante['codigo_estudiante']));
                        }
                        $mayorVotos = count($votos);
                    }
                }
            }

            $votosBlanco = $this->model->RepresentantesData->getVotosByCodigoEstudiante($codigoFacultad['facultad']);
            if (count($votosBlanco) > 0) {
                if (count($votosBlanco) >= $mayorVotos) {
                    if (count($votosBlanco) > $mayorVotos) {
                        $representanteGanador = array('Voto en Blanco');
                    } else {
                        array_push($representanteGanador, 'Voto en Blanco');
                    }
                    $mayorVotos = count($votosBlanco);
                }
            }

            $rep = array(
                'nombreFacultad' => $facultad = $this->model->faculties->GetById($codigoFacultad['facultad'])->getNombreFacultad(),
                'codigoFacultad' => $codigoFacultad['facultad'],
                'ganador' => $representanteGanador,
                'votos' => $mayorVotos
            );

            array_push($ganadores, $rep);
        }

        $this->assign("ganadores", $ganadores);
        $this->assign("verResultadosFacultad", $this->route->action("verResultadosFacultad"));
        $this->assign("docentes", $this->route->action("docentes"));
        $this->assign("egresados", $this->route->action("egresados"));

        $this->display();
    }
    
    public function verResultadosFacultad() {
        $codigoFacultad = $this->request->get('codigoFacultad');
        
        $representantes = $this->model->RepresentantesData->getEstudiantesAprobadosByCodigoFacultad($codigoFacultad['facultad']);
        
        $resultados = array();
        foreach ($representantes as $representante){
            $votos = $this->model->RepresentantesData->getVotosByCodigoEstudiante($representante['codigo_estudiante']);
            
            $temp = array(
                'representante' => $this->model->students->GetById($representante['codigo_estudiante']),
                'votos' => count($votos)
            );
            
            array_push($resultados, $temp);
        }
                
        $votosBlanco = $this->model->RepresentantesData->getVotosByCodigoEstudiante($codigoFacultad['facultad']);
        
        $temp = array(
            'representante' => 'Voto en Blanco',
            'votos' => count($votosBlanco)
        );

        array_push($resultados, $temp);

        $this->assign("resultados", $resultados);
        $this->assign("regresar", $this->route->action("index"));
        $this->display();
    }
    
    public function docentes() {
        $facultades = $this->model->RepresentantesData->getFacultadesDocentes();

        $ganadores = array();
        foreach ($facultades as $codigoFacultad) {
            $representantes = $this->model->RepresentantesData->getDocentesAprobadosByCodigoFacultad($codigoFacultad['facultad']);

            $mayorVotos = 0;
            $representanteGanador = array();

            foreach ($representantes as $representante) {
                $votos = $this->model->RepresentantesData->getVotosByNitDocente($representante['nit']);
                if (count($votos) > 0) {
                    if (count($votos) >= $mayorVotos) {
                        if (count($votos) > $mayorVotos) {
                            $representanteGanador = array($this->model->teachers->GetById($representante["nit"]));
                        } else {
                            array_push($representanteGanador, $this->model->teachers->GetById($representante["nit"]));
                        }
                        $mayorVotos = count($votos);
                    }
                }
            }

            $votosBlanco = $this->model->RepresentantesData->getVotosByNitDocente($codigoFacultad['facultad']);
            if (count($votosBlanco) > 0) {
                if (count($votosBlanco) >= $mayorVotos) {
                    if (count($votosBlanco) > $mayorVotos) {
                        $representanteGanador = array('Voto en Blanco');
                    } else {
                        array_push($representanteGanador, 'Voto en Blanco');
                    }
                    $mayorVotos = count($votosBlanco);
                }
            }

            $rep = array(
                'nombreFacultad' => $facultad = $this->model->faculties->GetById($codigoFacultad['facultad'])->getNombreFacultad(),
                'codigoFacultad' => $codigoFacultad['facultad'],
                'ganador' => $representanteGanador,
                'votos' => $mayorVotos
            );

            array_push($ganadores, $rep);
        }

        $this->assign("ganadores", $ganadores);
        $this->assign("verResultadosFacultad", $this->route->action("verResultadosFacultadDocentes"));
        $this->assign("estudiantes", $this->route->action("index"));
        $this->assign("egresados", $this->route->action("egresados"));

        $this->display();
    }
    
    public function verResultadosFacultadDocentes() {
        $codigoFacultad = $this->request->get('codigoFacultad');
        
        $representantes = $this->model->RepresentantesData->getDocentesAprobadosByCodigoFacultad($codigoFacultad['facultad']);
        
        $resultados = array();
        foreach ($representantes as $representante){
            $votos = $this->model->RepresentantesData->getVotosByNitDocente($representante['nit']);
            
            $temp = array(
                'representante' => $this->model->teachers->GetById($representante["nit"]),
                'votos' => count($votos)
            );
            
            array_push($resultados, $temp);
        }
                
        $votosBlanco = $this->model->RepresentantesData->getVotosByNitDocente($codigoFacultad['facultad']);
        
        $temp = array(
            'representante' => 'Voto en Blanco',
            'votos' => count($votosBlanco)
        );

        array_push($resultados, $temp);

        $this->assign("resultados", $resultados);
        $this->assign("regresar", $this->route->action("docentes"));
        $this->display();
    }
    
    public function egresados() {
        $facultades = $this->model->RepresentantesData->getFacultades();

        $ganadores = array();
        foreach ($facultades as $codigoFacultad) {
            $representantes = $this->model->RepresentantesData->getEgresadosAprobadosByCodigoFacultad($codigoFacultad['facultad']);

            $mayorVotos = 0;
            $representanteGanador = array();

            foreach ($representantes as $representante) {
                $votos = $this->model->RepresentantesData->getVotosByCodigoEgresado($representante['codigo_estudiante']);
                if (count($votos) > 0) {
                    if (count($votos) >= $mayorVotos) {
                        if (count($votos) > $mayorVotos) {
                            $representanteGanador = array($this->model->students->GetById($representante['codigo_estudiante']));
                        } else {
                            array_push($representanteGanador, $this->model->students->GetById($representante['codigo_estudiante']));
                        }
                        $mayorVotos = count($votos);
                    }
                }
            }

            $votosBlanco = $this->model->RepresentantesData->getVotosByCodigoEgresado($codigoFacultad['facultad']);
            if (count($votosBlanco) > 0) {
                if (count($votosBlanco) >= $mayorVotos) {
                    if (count($votosBlanco) > $mayorVotos) {
                        $representanteGanador = array('Voto en Blanco');
                    } else {
                        array_push($representanteGanador, 'Voto en Blanco');
                    }
                    $mayorVotos = count($votosBlanco);
                }
            }

            $rep = array(
                'nombreFacultad' => $facultad = $this->model->faculties->GetById($codigoFacultad['facultad'])->getNombreFacultad(),
                'codigoFacultad' => $codigoFacultad['facultad'],
                'ganador' => $representanteGanador,
                'votos' => $mayorVotos
            );

            array_push($ganadores, $rep);
        }

        $this->assign("ganadores", $ganadores);
        $this->assign("verResultadosFacultadEgresados", $this->route->action("verResultadosFacultadEgresados"));
        $this->assign("docentes", $this->route->action("docentes"));
        $this->assign("estudiantes", $this->route->action("index"));

        $this->display();
    }
    
    public function verResultadosFacultadEgresados() {
        $codigoFacultad = $this->request->get('codigoFacultad');
        
        $representantes = $this->model->RepresentantesData->getEgresadosAprobadosByCodigoFacultad($codigoFacultad['facultad']);
        
        $resultados = array();
        foreach ($representantes as $representante){
            $votos = $this->model->RepresentantesData->getVotosByCodigoEgresado($representante['codigo_estudiante']);
            
            $temp = array(
                'representante' => $this->model->students->GetById($representante['codigo_estudiante']),
                'votos' => count($votos)
            );
            
            array_push($resultados, $temp);
        }
                
        $votosBlanco = $this->model->RepresentantesData->getVotosByCodigoEgresado($codigoFacultad['facultad']);
        
        $temp = array(
            'representante' => 'Voto en Blanco',
            'votos' => count($votosBlanco)
        );

        array_push($resultados, $temp);

        $this->assign("resultados", $resultados);
        $this->assign("regresar", $this->route->action("egresados"));
        $this->display();
    }

}

?>
